package grame

import org.grails.databinding.BindingFormat

/**
 * @author Shining Wang <shiningwang@topca.com>
 */
class AppSetting {
    String id = UUID.randomUUID().toString()
    String name
    String value
    @SuppressWarnings("GroovyUnusedDeclaration")
    @BindingFormat('yyyy-MM-dd HH:mm:ss')
    // 绑定数据以服务器时区为准，时区转换由前台进行
    Date dateCreated
    @SuppressWarnings("GroovyUnusedDeclaration")
    @BindingFormat('yyyy-MM-dd HH:mm:ss')
    // 绑定数据以服务器时区为准，时区转换由前台进行
    Date lastUpdated

    static constraints = {
        //字符、数字或下划线开头，点号只能分隔字符或数字，其他内容可由字符、数字、下划线、减号组成，但必须以字符、数字或下划线结束。
        id bindable: true, matches: /^[\w\d_]+(?:(?:[\w\d].[\w\d])?[\w\d_-]+[\w\d_])*/
        // \/:*?"<>|以及控制字符不能作为名称
        name nullable: false, blank: false, matches: /[^\\\/:*?"<>|\x00-\x1F\x7F]+/
        value nullable: false, blank: false
    }

    static mapping = {
        id generator: 'assigned'
    }

    @Override
    public String toString() {
        return "${domainClass.name} : ${name}(${id})"
    }

    public AppSetting setValue(String value) {
        this.value = value
        return this
    }
}
